Techniques to facilitate collaborative social coding

ABSTRACT

Embodiments relate to method and program product enabling collaborative social coding. Social networking functionality is embedded and via that social networking functionality information relating to a particular function across a computing network is tracked. The tracked information is then accumulating and organized as relating to a particular function. Upon request receipt, information is then provided relating to the particular function including a list of those accessing that function.

BACKGROUND

The present disclosure relates generally to social coding andparticularly to techniques that can facilitate collaborative socialcoding.

An integrated development environment or an IDE is a softwareapplication that provides programmers and designers of software theability to provide multiple development utilities in a single cohesiveunit. The facilities are comprehensive and can include source codeeditors, debuggers, compilers and interpreters, build automations andthe like. Various tools are integrated in many IDEs to help simplifyconstruction of graphical user interfaces (GUIs) and other componentsthat help enable its use with object oriented software development.

IDEs are designed to maximize programmer productivity by providingcomponents with similar user interfaces. The program typically providesmany features for authoring, modifying, compiling, deploying anddebugging software. IDEs help reducing setup time which can increasedeveloper productivity. More comprehensive integration of alldevelopment tasks has the potential to improve overall productivitybeyond helping with setup tasks. For example, code can be continuouslyparsed while it is being edited, providing instant feedback when syntaxerrors are introduced. That can speed learning a new programminglanguage and its associated libraries.

Some IDEs are dedicated to a specific programming language but many havemultiple language capabilities. In addition, while many IDEs aregraphical based, text based IDEs also exist. The IDE may be a standaloneapplication or may be included as part of one or more existing andcompatible applications. In recent years, both web based and mobiledevice based IDEs have been gaining popularity. IDEs for developinghypertext markup language (HTML) applications are commonly used. Manyweb-site designers use an IDE that automates many of the tasks involved.

BRIEF SUMMARY

Embodiments relate to method and program product enabling collaborativesocial coding. Social networking functionality is embedded i and viathat social networking functionality information relating to aparticular function across a computing network is tracked. The trackedinformation is then accumulating and organized as relating to aparticular function. Upon request receipt, information is then providedrelating to the particular function including a list of those accessingthat function.

The enhancement to a first integrated development environment (IDE) isallowed by viewing a second IDE using a social network environment.Displaying a list of available IDEs using a chat window, using thesocial network environment. Selecting the list for display by matchingone or more characteristics pertaining to said first IDE that can becommon with one or more available IDEs and retrieving the second IDEonce selection is made from said list.

Additional features and advantages are realized through the techniquesof the present disclosure. Other embodiments and aspects of thedisclosure are described in detail herein. For a better understanding ofthe disclosure with the advantages and the features, refer to thedescription and to the drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The foregoing and other features, and advantages ofthe disclosure are apparent from the following detailed descriptiontaken in conjunction with the accompanying drawings in which:

FIG. 1 depicts an example of a screen shot allowing collaborative socialcoding in accordance with an embodiment; and

FIG. 2 depicts a bock architecture diagram enabling techniques forcollaborative social coding in accordance with an embodiment.

DETAILED DESCRIPTION

Designing and architecting large software systems require projectmanagers, software engineers, testers, user interface designers and manyadditional experts. However, actually coding particular components ofthe software is very much an individual task which can be timeconsuming. While techniques such as “pair programming” in some studieshave produced shorter programs with better designs and fewer errors.Pair programming technique is one in which two programmers work togetherat one workstation. For example, one can write code while the otherreviews each line of code that is being typed in and then the two oftenswitch roles. Many programmers, however, feel uncomfortable in thisarrangement which may be counterproductive from a creative point ofview. Other examples of “social” programming are not very common andhave not been successful.

Social networking is a recent phenomenon that has been helpedtremendously with the advent of wireless technology and on-line servicessuch as mobile devices and the Internet. A social networking group issimilar to an online community with a group of individuals as itsmembers. Social networking is often made possible by a social networkingservice. A social networking service is an online service, platform, orsite that focuses on facilitating the building of relationships amongpeople who share common interests, activities, backgrounds, or real-lifeconnections. Social networking websites are known as social sites andoften function like an online community. Once access is provided to asocial networking website, the members begin socializing and exchangingideas and pose questions and answers. Social networking sites allowusers to share ideas, activities, events, interests and at times providea neutral forum to ask questions and receive answers from a large crosssection of the population anonymously. In recent years, socialnetworking websites have also been used to interconnect employees of aparticular company so that they can share ideas and solve problems. Inaddition, open communities have taken advantage of such websites toidentify potential problems and help resolve them. Examples can includeuser groups, open source software developer communities or otherrelationships that are established around connecting customers andmerchants/service providers.

Integrated software development environments (IDEs) is an area that canbenefit greatly from “social” programming, that is programming that canbe accomplished in part from collaborative development or review. IDEdevelopers and development can benefit greatly with cohesive and groupor social programming especially when combined with use of socialnetworks, in particular social networks designed to help out with commonneeds of everyday programmers. The popularly of social networks enableeasy access to a programming community. Some of the most popular socialnetwork in this context, can be those that provide access to programmersthat are working on the same or similar project. This is a collection ofprogrammers with experience of using a particular software library orespecially those with application programming interfaces (APIs).Programmers with experience using a non-commercial or commercial productsuch as relational database, can also benefit greatly by this. Socialnetworking can be used that is specific to a company or more orientedtoward the general developer communities. Unfortunately, despitepopularity of social networking challenges have not allowed developersand programmers use social networking in development and modification ofIDEs.

In one embodiment, a technique is proposed that makes suchcollaboration, especially for IDEs easy and beneficial. FIG. 1, is anexemplary screen display illustration according to one embodiment thatenables collaborative social coding. In one example, a programmer may bedeveloping an application, project or other similar task with certainfunctionalities as shown at 110. In this embodiment, as will bediscussed in more detail, a technique is provided to combine integratedsoftware development environments (IDEs) with social networks, inparticular social networks that are designed to help with common needsof everyday programmers or users. This will allow easy collaboration andaccess between users/programmers that work on the same project, whetheremployed in the same company or entity. In addition, a collection ofprogrammers with experience using a particular software library or APIcan also collaborate and combine their efforts. In a different example,programmers with experience using, configuring, or customizing, anon-commercial or commercial product (e.g. relational database) can alsobe able to benefit from such techniques. In the embodiment provided inFIG. 1, social network functionality can be embedded directly into theIDE which is or will be used by the programmer/user. In one example,certain IDE features and functionalities such as content assist can beused that will bring up a window showing available methods (withdocumentation if available) an object accepts. Referring back to FIG. 1,an example of how a user interface can be used to address such needs.

In FIG. 1, as discussed an example of an embodiment is provided that hasthe content assist feature. This feature is used to bring up a windowshowing available methods (with documentation if available) that can beused at 120. In one embodiment, the same window can also display a listof collaborators that recently used a particular function with a way ofcontacting the collaborator with additional questions or requests asneeded. In one embodiment, the process can be controlled by a managerapplication that can have the content assist feature integrated into it.The manager can be configured to provide one or more functions using aprocessor.

The example provided in FIG. 1 provides one way that a user interfacemay look like with the understanding that as can be appreciated by thoseskilled in the art many other alternate methods are available. In oneexample a screenshot can be provided using conversation between twoindividuals, such as programmers or friends. The screenshot exampleshows these friends have used an API embedded facility that can providecomments directly into a code assist feature on an IDE. An embeddedsocial network component can be used to seamlessly track tasks andactions of a programmer and builds a personal programmer profile. Bycombing the profiles of many programmers across projects, usefulinformation can be mined and used for future collaborations and mutualsupport.

In a different example, a programmer is the creator/author of an API. Inone embodiment, the technique provides a way to contact the programmerdirectly with questions. In addition, notifications are provided or sentwhen the implementation of an API used by a programmer changes. In otherembodiments, the content assist or manger can provide an option fordisplaying or providing information about the frequency or use or changeto a particular API. This will allow among other things to provide anindication of the maturity of the API, or even which API to pick ifmultiple options are available. Of course, this is not related to APIsand can relate to any other functionality as can be appreciated by oneskilled in the art.

In a different embodiment, statistics can be collected across multipleprojects as well. For example, if taking the second example of aprogrammer developing API's, statistics of API errors can be taken. Inyet another embodiment, a collection of feature requests or even erroror bug reports from the users of a particular function (IDE, API etc)can be requested. The requests can even be accumulated and stored in arepository for future feature requests in storage. This feature caneasily be designed to take advantage of available management systemssuch as “clearquest” or “bugzilla”.

For a specific feature request, in one embodiment, the creator of an IDEor API or other features can also contact the user of record for furtherinformation. However, if the feature request already exists, other userscould refer to the source and comments on it (information sharing).

In one embodiment, a problem solving logger can be provided by themanager. The logger provides logging function in general. Some examplescan be providing logs for communication or even conversation happeningbetween users and creator (API, etc.) when the user encounters problemsor has further questions or comments regarding a specific function. Inone embodiment, consent of all parties can be required before theconversation could be automatically integrated into a tutorial systemsuch as an online supporting system for this particular function. Theconsent can be provided in a number of ways such as by clicking anagreement form on line. Once the log is provided, in one embodiment, itcan then be accessed publicly or with certain constraints such as byrequiring use of a password or other such similar methods. The furtherconstraint requirement can be defined in a number of ways such as by thecreator/author himself or herself. In this way the creator/author couldavoid repetitive conversations on same topics again and again forefficiency purposes.

Consequently, the embedded social network component not only seamlesslytracks the tasks and actions of the users and programmers but also hasthe ability to build a personal user/programmer profile and use theprofile across projects and mines all useful information. As discussedabove, other examples of functionality that can be provided as theability to contact the creator (author) of an API directly withquestions, receiving notifications when the implementation of an APIused by a programmer/user changes, indicates the frequency a particularAPI is used (thus providing an indication of the maturity of an API, oreven which API to pick if multiple options are available). Statisticscan be collected across multiple projects as discussed as well. Suchstatistics can be used in a variety of ways including monitoring APIerrors, especially when automated (tested) as captured by the system.

FIG. 2 is a block diagram illustrating an overview of a generalarchitecture of a system as per one embodiment. In FIG. 2, the IDE isshown at 210 in providing processing communication through a socialcoding component having a plugin in one embodiment. The social codingplugin is shown at 215. In this embodiment, IDE is extended by a SocialCoding Plugin component. The purpose of the plugin in this embodiment isto enable a window, dialog panel, or view, to establish communication.In one embodiment this is a chat window to provide a one on one as wellas group discussion. Some examples of available functionality enablingthe chat that can be easily integrated into the technique are SKYPE orGOOGLETALK.

In a different embodiment, the window can provide in person chatting ortextual or other image oriented recorded information. In one embodiment,the window can provide the programmers/users an option for a screenshare to see a second IDE. The window can include a public or privatesocial network. Some possible chat options include an IDE chat windowthat includes certain persons (friends, project leaders, programmer of afeature etc.) when they are available on-line. Information about one ormore persons can be provided. Such information can pertain to theauthor/creator of a code or even include information about specificclasses, methods or APIs. This can be integrated into the code assistfeature as well. The social coding can also integrate information aboutwho and how recently a feature was used or even modified. The socialcoding or IDE can integrate information about “friends” who authoredcode (classes, methods, APIs) and even turn it into a Social NetworkDiscussion or View (including discussion history). In one embodiment theIDE in this case can include or integrate a code assist feature. In oneembodiment, the check in/check-outs are forwarded to a “social codingserver”.

In one embodiment, the program manager can also provide an option todetect and monitor check-in/checkouts of files, such as using a versioncontrol systems (VCS). The version control systems can be monitored andare configured by the user.

In one embodiment, earlier accumulated information can be stored instorage to be used at any time. This information can then be retrievedas needed. In addition, the user can ask for new created files to beparsed to detect new libraries and new features and API's. In thisembodiment, the new created files are parsed to also detect uses ofexisting libraries and API's and features, or alternatively to detectnew uses of existing libraries and API's. Information relating tolibraries, features and API's created and used by one or more particular(or generally) users in a programmer profile database can also beestablished in one embodiment.

In one embodiment, a request for those who authored code can return ananswer by querying the programmer profiles of selected individuals asidentified by name or other classification. The same can be retrievedfor individuals or “friends” who recently modified code by querying suchinformation by accessing a programmer profile database. In oneembodiment, the requests of other people requesting or querying certaininformation can be provided to the original user so that the user canunderstand, for example, who has included or used code. In addition,upon receiving requests for new notifications such notifications can bedisplay to a user (programmer). In one embodiment, a “wall” postingthat's owned by the creator of API containing information/conversationbetween users and API creators can also be used to include informationsuch as API creators and this information can also be controlled so thataccess to such wall postings is manipulated by the user as desiredaccordingly.

FIG. 2, provides an illustration of a block diagram showing a generalarchitecture for an environment that allows collaborative coding as perone embodiment. Many of the concepts provided in FIG. 2 is alreadydiscussed and the figure is provided to aid understanding. As can beappreciated by those in the art, FIG. 2 only provides an illustrativeexample and other alternative embodiments are possible. The instantmessage as shown in 200 is provide by a device or processor that is inprocessing communication with an IDE (also provided by an electronicdevice or process). The IDE is shown at 210 and can include otherfeatures such as a plug-in 215 and a tracker 217. The instant messagingis also accessed by other electronic devices such as one or more VCSdevices shown here as 220 and 225. The IDE is in communication with acomputing environment 230. In one embodiment, the environment can be asocial network environment. The environment can include one or moreelectronic components and processors. In this example, the environmentprovides a server 240, storage 247 and query processor 249. The managerapplication (not illustrated) can be incorporated in the IDE or in theenvironment 230.

Consequently, as discussed techniques can be provided to embed socialnetworking functionality into an integrated development environment(IDE) by tracking via said social networking functionality informationrelating to a particular function across a computing network. Thecomputing network can comprise a variety of processors and computers orother digital devices in processing communication with one another.These computers, processors and digital devices will be referred asnodes for ease of understanding. The other digital devices can includebut is not limited to both wireless and wired devices, mobile devices,printers, displays and memory (internal and external) and other storagedevices. In one embodiment, these nodes have access to social networkingsites and in one embodiment, the user(s) or programmers using them arein communication with one another through the social networking site.The technique allows the accumulation and organization of the trackedinformation about a particular function (i.e. API). Upon receipt of arequest, information relating to the particular function can be providedincluding a list of those accessing the function. A user interface and adisplay is provided, in one embodiment, to enable requesting ofinformation about said API by a user and enabling displaying therequested information to a user and the list of accessing to said API isprovided through connection with a social network. The trackedinformation can include a variety of information such as list ofcollaborators that (recently) used the API, information pertaining tocontacting these collaborators which may further include their name andemail. The tracked and accumulated information can also include profileof users/programmers that have or are modifying a function or an API andinformation pertaining to contacting them as well. The technique canalso allow for notifications to be sent. For example, a notification canbe sent every time an API is altered. In one embodiment, a function oran API can include a software library, an object oriented class or anobject oriented class method.

In one embodiment, a plurality of APIs can be tracked and informationabout them can be accumulated. In addition, the usage of a plurality ofusers or programmers can also be tracked. The combined information canalso be accumulated in this and other embodiments that include frequencyof use of each API, categorizing accumulated and combined information toindicate API's availability by multiple options and age of maturity, andgeneral statistics about the API including information related to APIerrors. In one embodiment, a logging function is included that canprovide information about the API such as answers to questions and atutorial for using the API.

To allow for communication with the programmer/user, in one embodiment,user interface is included or attached to the nodes which allow thedisplay of a communication window or the like as can be appreciated bythose skilled in the art. As discussed before, several nodes can be inprocessing communication with one another at the same time and each isenabled to be used by different users/programmers. Theseusers/programmers can simultaneously make collaborative changes andsimultaneous communication with one another regarding a particular API.Information can be provided about these users/programmers to one anotherthat can include availability for instantaneous communication; list ofusers that are using or have authored at least one these APIs anddiscussion history about each particular API between different users inthe past or as is happening simultaneously.

In one embodiment, information about usage of a user/programmer can bestored in a Programmer Profiles Database such as in a memory. The memorycan be also used to store information about any API. In one embodiment,the API creator can control the dissipation of such information. Theinformation about selected API as monitored, can be also recorded in theProgrammer Profile Database. This information can include the creationof new API's and information relating to uses of existing API's. Theinformation can also include any uses of existing API that are detectedby parsing files created or updated by a user/programmer. Otherinformation that can be stored can include instances where the requestornotified has used the modified API in the past.

In another embodiment, information about checking in and checking out offiles can also be stored and monitored relating to an API. Such storageand monitoring can be further performed by utilizing a version controlsystem (VCS) which is then forwarded to a social coding server. The VCScan be configured by a user/programmer and the files created or updatedcan be retrieved from the VCS (from memory).

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the disclosure.As used herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present disclosure has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the disclosure in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the disclosure. Theembodiments were chosen and described in order to best explain theprinciples of the disclosure and the practical application, and toenable others of ordinary skill in the art to understand the disclosurefor various embodiments with various modifications as are suited to theparticular use contemplated.

Further, as will be appreciated by one skilled in the art, aspects ofthe present disclosure may be embodied as a system, method, or computerprogram product. Accordingly, aspects of the present disclosure may takethe form of an entirely hardware embodiment, an entirely softwareembodiment (including firmware, resident software, micro-code, etc.) oran embodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present disclosure may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent disclosure may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present disclosure are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of thedisclosure. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

What is claimed is:
 1. A method comprising: embedding social networkingfunctionality into a computing integrated environment (IDE); trackingvia said social networking functionality information relating to aparticular function across a computing network; accumulating andorganizing said tracked information about said particular function viathe IDE, wherein the particular function is an application programminginterface (API); upon receipt of a request for information, providinginformation relating to the function, said information including a listof those accessing the function, a name of creator of the function andinformation pertaining to contacting said creator, and a frequency ofuse of the function, wherein a display is provided to enable requestingof information about said function by a user and enabling displayingsaid requested information to the user.
 2. The method of claim 1,wherein the computing network includes a plurality of computers incommunication with one another through a social network.
 3. The methodof claim 2, further comprising notifying requestor of information everytime an API is altered.
 4. The method of claim 2, wherein informationabout checking in and checking out of files about an API is alsomonitored using a version control system and said information isforwarded to a social coding server.
 5. The method of claim 4, whereinsaid version control systems is configured by a user and files createdor updated are retrieved from a version control system.
 6. The method ofclaim 2 where an API can include a software library, an object orientedclass or an object oriented class method.
 7. The method of claim 1,wherein said tracked information include list of collaborators that usedsaid API and information pertaining to contacting said collaborators. 8.The method of claim 7, wherein said tacked and accumulated informationincludes profile of users modifying said API and information pertainingto contacting said users.
 9. The method of claim 1 wherein informationabout a plurality of APIs is tracked and accumulated as well as usage ofa plurality of users.
 10. The method of claim 9, further comprisingcategorizing accumulated and combined information to indicate API'savailable by multiple options and age of maturity.
 11. The method ofclaim 10, wherein said accumulated information also includes statisticsrelated to API errors.
 12. The method of claim 9, wherein a loggingfunction is included that provides information about said API includinganswers to questions and a tutorial for using said API.
 13. The methodof claim 1, wherein a window is provided for user communication.
 14. Themethod of claim 13, wherein several nodes are in communication with oneanother each being enabled to be used by different users and said userscan simultaneously make collaborative changes and simultaneouscommunication with one another regarding an particular API.
 15. Themethod of claim 13, wherein said information is stored in a programmerprofiles database.
 16. The method of claim 15 wherein information storedabout an API is controlled by said API creator.
 17. The method of claim1, wherein information about selected API are monitored and recorded ina programmer profile database, including creation of new API's andinformation relating to uses of existing API's and use of existing APIare detected by parsing files created or updated by a user furthercomprising compiling statistics related to API errors via an automatedtesting unit.
 18. A computer program product comprising a non-transitorycomputer readable storage medium having computer readable program codeembodied therewith, said computer readable program code being executableby a processor to: embed social networking functionality into acomputing integrated environment (IDE); track via said social networkingfunctionality information relating to a particular function across acomputing network; accumulate and organize said tracked informationabout said particular function via the IDE, wherein the particularfunction is an application programming interface (API); and upon receiptof a request for information, providing information relating to thefunction including list of those accessing the function, a name ofcreator of the function and information pertaining to contacting saidcreator, and a frequency of use of the function, wherein a display isprovided to enable requesting of information about said function by auser and enabling displaying said requested information to the user.